﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NHibernate;
using NHibernate.Criterion;
using bolsatrabajo.Dominio.NHIBERNATE;

namespace bolsatrabajo.Persistencia.NHIBERNATE
{
    public class OfertanteNH : MaestroNH<Ofertante, String>, IOfertanteNH
    {
        public ICollection<Ofertante> ListarxRubro(String rubro)
        {
            using (ISession sesion = NHibernateHelper.AbrirSesion())
            {
                var ofertantes = sesion
                    .CreateCriteria(typeof(Ofertante))
                    .Add(Restrictions.Eq("Rubro", rubro))
                    .List<Ofertante>();
                return ofertantes;
            }
        }

        public ICollection<Ofertante> ListarxRubroyUbicacion(String rubro, String ubicacion)
        {
            using (ISession sesion = NHibernateHelper.AbrirSesion())
            {
                var ofertantes = sesion
                    .CreateCriteria(typeof(Ofertante))
                    .Add(Restrictions.Eq("Rubro", rubro))
                    .Add(Restrictions.Eq("Ubicacion", ubicacion))
                    .List<Ofertante>();
                return ofertantes;
            }
        }

        public Ofertante ObtenerPorRazonSocialYRuc(String razons, String ruc)
        {
            using (ISession sesion = NHibernateHelper.AbrirSesion())
            {
                Ofertante ofertante = sesion
                        .CreateCriteria(typeof(Ofertante))
                        .Add(Restrictions.Eq("RazonSocial", razons))
                        .Add(Restrictions.Eq("Ruc", ruc))
                        .UniqueResult<Ofertante>();
                return ofertante;
            }
        }

        public ICollection<Ofertante> ListarOfertantes()
        {
            using (ISession sesion = NHibernateHelper.AbrirSesion())
            {
                ICollection<Ofertante> resultado = sesion
                        .CreateCriteria(typeof(Ofertante))
                        .List<Ofertante>();
                return resultado;
            }
        }
        public Ofertante ObtenerPorCorreoYContrasena(String xcorreo, String xcontrasena)
        {
            using (ISession sesion = NHibernateHelper.AbrirSesion())
            {
                Ofertante ofertante = sesion
                        .CreateCriteria(typeof(Ofertante))
                        .Add(Restrictions.Eq("Correo", xcorreo))
                        .Add(Restrictions.Eq("Contrasena", xcontrasena))
                        .UniqueResult<Ofertante>();
                return ofertante;
            }
        }
    }
}